home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_a
/
bugs4.act
< prev
next >
Wrap
Text File
|
1995-04-22
|
9KB
|
327 lines
ACTION! BUG SHEET #3 - part 4
-------------------------------------
PROBLEMS WITH PAD
We will list the problems (and
solutions) regarding the Programmer's
Aid Disk here in reasonably compact
form.
1. BGET/BPUT PROBLEMS -- The BGet
and BPut routines in the IO.ACT
file do not work properly under
certain conditions. To fix this
bug, replace the BGet and BPut
routines with the following
ACTION! code:
;********************************
;Burst (Block) I/O routines to do
;quick disk I/O, utilizing a call
; to CIO
;********************************
PROC CIO=$E456( BYTE areg, xreg )
;********************************
CARD FUNC Burst( BYTE chan, mode,
CARD addr, buflen )
TYPE IOCB=[BYTE id,num,cmd,stat
CARD badr,padr,blen
BYTE a1,a2,a3,
a4,a5,a6]
IOCB POINTER iptr
chan ==& $07
iptr = $340+(chan LSH 4)
iptr.cmd = mode
iptr.blen = buflen
iptr.badr = addr
CIO( 0, chan LSH 4 )
RETURN( iptr.blen )
;********************************
CARD FUNC BGet( BYTE chan,
CARD addr, len )
CARD temp
temp = Burst(chan,7,addr,len)
RETURN( temp )
;********************************
PROC BPut(BYTE chan,
CARD addr,len)
Burst( chan, 11, addr, len )
RETURN
2. PRINTF -- The PRINTF routine has
a bug which was reported and
fixed in the Spring, 1984
newsletter. In the file
PRINTF.ACT, use the ACTION!
editor to find
args ==+ s
and change it to
args ==+ 2
3. PLAYER/MISSILE GRAPHICS --
Because S: uses some memory just
below the display list
(undocumented), our method of
finding the base address for
Player/Missile Graphics needs a
slight revision. Use the ACTION!
editor with the file PMG.ACT to
find
PM_BaseAdr=(HiMem-
PM_MemSize(mode))
&PM_AdrMask(mode)
and change it to
PM_BaseAdr=(HiMem-
PM_MemSize(mode)-$80)
&PM_AdrMask(mode)
4. If you use the PMMove procedure
and specify a vertical movement
of zero, the horizontal movement
does not take place (it should).
To fix this, change the lines in
PMG.ACT which read
IF deltay=0 THEN
RETURN ; do nothing
FI
to the following:
IF deltay=0 THEN
; do horizontal anyway
PMHpos(n)=x
RETURN
FI
5. PLAYER/MISSILE GRAPHICS -- The
documentation for PMG.ACT states
that you may read the contents of
PMHpos to find the horizontal
position of a player or missile.
This is simply not true. PMHpos
is a set of write-only hardware
registers. (Note that in the
ToolKit we have added a shadow
array and changed the name of the
hardware registers, so this works
correctly. If you wish, you
could consider doing something
similar on your PAD.)
6. REAL NUMBER ROUTINES -- There are
two discrepancies in PROCedure
names in the REAL.ACT library as
compared to the REAL.DOC
documentation, as follow:
Name in .DOC Name in .ACT
StrR RealToStr
ValR StrToReal
We suggest that you change the
source code in REAL.ACT to
reflect the names given in the
documentation (rather than vice
versa), since this makes the
names appear compatibile with the
library's other number-string
conversion routines.
7. REAL NUMBER ROUTINES -- In that
same area, the routine RealToStr
(or should that be StrR?) needs
to change the line which reads
ptr=LBuff
to the following:
ptr=InBuff
8. ALLOC.ACT -- The free list
pointer may not be set up
properly. Also, when freeing a
block, right adjacency is not
handled properly if left
adjacency has already been found.
Fix these problems as follows:
In the PROCedure Free, after the
line reading:
last.size==+nBytes
insert the line:
target=last
Also, in the same procedure,
change the line reading:
IF target+nBytes=current THEN
to read:
IF target+target.size
=current THEN
In the PROCedure AllocInit,
replace the line reading:
FreeList.next=p
with the following lines:
FreeList=p
p==+4
FreeList.next=p
-------------------------------------
TOOLKIT TROUBLES
It's hard to believe that a product
as new as the ACTION! ToolKit can
already have bug reports. Sigh.
Anyway, there are already three
versions of the ToolKit. Version 1
has 31 free sectors (when you list
its directory). Version 2 has fewer
free sectors and the second line of
the file MUSIC.DEM reads ";Version
2". On version 3, the file ABS.ACT
starts with the version number. This
last convention will be followed in
future versions. The comments here
are organized by affected version(s).
VERSION 1 ONLY
1. I/O ROUTINES -- The manual
describes a routine called Format
(in the IO.ACT library), but no
such procedure exists on the
disk. However, the routine is
there--it's just called Init
instead. You should change your
disk to match your manual.
2. MUSIC.DEM -- The program called
MUSIC.DEM will not work as is on
older 400/800 machines. This is
because it uses a call to
Graphics(15), which is only
available on XL machines. You
may change the program to use
Graphics(8) with no effect except
that the true colors of mode 15
become artifact colors in mode 8
instead.
VERSIONS 1 AND 2
1. REAL ROUTINES -- There are two
discrepancies in PROCedure names
in the REAL.ACT library as
compared to the REAL.DOC
documentation, as follow:
Name in .DOC Name in .ACT
StrR RealToStr
ValR StrToReal
We suggest that you change the
source code in REAL.ACT to
reflect the names given in the
documentation (rather than vice
versa), since this makes the
names appear compatibile with the
library's other number-string
conversion routines.
2. SORT ROUTINES -- There are four
discrepancies in PROCecure names
in the SORT.ACT library as
compared to the SORT.ACT
documentation, as follows:
Name in .DOC Name in .ACT
SortB BSort
SortC CSort
SortI ISort
SortS SSort
Please change your disk file to
agree with your manual.
3. PRINTF -- The PRINTF routine has
a bug which was reported and
fixed in the Sprint, 1984
newsletter. In the file
PRINTF.ACT, use the ACTION!
editor to find
args ==+ s
and change it to
args ==+ 2
VERSIONS 1, 2, AND 3.
1. ALLOC ROUTINES -- The manual in-
dicates that the procedure
AllocInit requires that you pass
it the address of the first free
byte of memory (because Alloc
"dispenses" memory from the first
free byte through the top of
memory, as correctly described in
the manual). However, since you
MUST follow the procedure
described in the introduction to
ALLOCATE.ACT (that is, you must
declare in your program a CARD
called EndProg and use the
command
SET EndProg=*
after compiling), the parameter
to AllocInit is not really needed
and so has been eliminated.
(AllocInit uses EndProg just as
Alloc does.) If you pass a
parameter to AllocInit, it will
be ignored.
2. WARP.DEM -- No mention is made in
the Toolkit manual that this file
can only be run when compiled
from disk (unless you are using
DOS XL to gain extra memory).
WARP.DEM is just too big for
ACTION! to hold both the source
and object in memory at one time.
3. ALLOCATE.ACT -- The free list
pointer may not be set up
properly. Also, when freeing a
block, right adjacency is not
handled properly if left
adjacency has already been found.
Fix these problems as follows:
In the PROCedure F